Lambda-Calculus and Functional Programming
نویسنده
چکیده
ion operator; this is because [x]M is an abbreviation for a term in which M and its subterms do not occur. On the other hand, in the natural reduction for lambda-calculus, replacements inside the scope of an abstraction are extremely natural. Thus, what is now called λβ -reduction satisfies a scheme which weak reduction does not, namely (ξ): if M reduces to N, then λx.M reduces to λx.N. (The same is true if «reduces» is replaced by «converts».) This gives us two kinds of reduction and two kinds of conversion. There is a third kind of each of reduction and conversion: Curry’s original papers all included postulates to satisfy a principle of extensionality (ζ): if Mx converts to Nx, where x does not occur free in M or N, then M converts to N. It turns out that for conversion (but not reduction), (ζ) is equivalent to the conjunction of (ξ) and (η): if x does not occur free in M, then λx.Mx converts to M. (Note that this says that everything converts to an abstraction.) If (η) for
منابع مشابه
Algebra and Topology in Lambda Calculus
The untyped lambda calculus was introduced around 1930 by Church [11] as part of an investigation in the formal foundations of mathematics and logic. Although lambda calculus is a very basic language, it is sufficient to express all the computable functions. The process of application and evaluation reflects the computational behavior of many modern functional programming languages, which expla...
متن کاملArrays in Imperative Lambda Calculus
In recent work, we defined a formal system called Imperative Lambda Calculus to provide clean integration of functional and imperative programming styles. In this paper, we study the issues of array manipulation in this framework. It is shown that the unique features of the calculus allow one to express array algorithms using high-level abstractions that are not available in purely functional l...
متن کاملProgramming with Visual Expressions
The lambda calculus is a formal symbolic term rewrite system that has been used for many years both as a mechanism for defining the semantics of programming languages, and as the basis for functional programming languages. In this paper, we describe a completely visual representation for lambda expressions, VEX, that has several advantages over traditional textual lambda calculus. Although VEX ...
متن کاملA Consistent Extension of the Lambda-Calculus as a Base for Functional Programming Languages
Church 's lambda-calculus is modified by introducing a new mechanism, the lambda-bar operator # , which neutralizes the effect of one preceding lambda binding. This operator can be used in such a way that renaming of bound variables in any reduction sequence can be avoided, with the effect that efficient interpreters with comparatively simple machine organization can be designed. It is shown th...
متن کاملPublic-key cryptography in functional programming context
Cryptography is the science of information and communication security. Up to now, for efficiency reasons cryptographic algorithm has been written in an imperative language. But to get acquaintance with a functional programming language a question arises: functional programming offers some new for secure communication or not? This article investigates this question giving an overview on some cry...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2000